<?php

namespace app\common\model\Business;

use think\Model;

// 引入软删除的模型
use traits\model\SoftDelete;
/**
 * 用户模型
 */
class User extends Model
{
    //在模型内部去引入软删除
    use SoftDelete;
    //设置该模型对应的数据库
    protected $name = "business";

    // 开启自动写入
    protected $autoWriteTimestamp = true;

    // 设置字段的名字
    protected $createTime = 'createtime';

    // 设置更新的字段名字
    protected $updateTime = false; // 更新数据的时候不更新时间字段

    //设置软删除的字段更新的时间字段
    protected $deleteTime = 'deletetime';

    // 增加的获取器字段选项
    protected $append = [
        'avatar_text',
        'gender_text',
        'deal_text',
        'auth_text',
        'region_text',
        'province_text',
        'city_text',
        'district_text',
        'concern_list',
    ];

    // 关注
    public function getConcernListAttr($value, $data)
    {
        $concern = $data['concern'];

        if(empty($concern))
        {
            return [];
        }

        //把字符串转换数组
        return explode(',', $concern);
    }

    // 性别
    public function getGenderTextAttr($value,$data){
        $sexlist = [0 => '保密', 1 => '男', 2 => '女'];

        $gender = isset($data['gender']) ? $data['gender'] : '';

        if($gender >= '0'){
            return $sexlist[$gender];
        }
        return; 
    }

    // 成交状态
    public function getDealTextAttr($value,$data){
        $deallist = [0=>'未成交',1=>'成交'];
        $deal = isset($data['deal']) ? $data['deal'] : '';
        if($deal >= '0'){
            return $deallist[$deal];
        }
    }

    // 认证状态
    public function getAuthTextAttr($value,$data){
        $authlist = [0=>'未认证',1=>'认证'];
        $auth = isset($data['auth']) ? $data['auth'] : '';
        if($auth >= '0'){
            return $authlist[$auth];
        }
    }

    public function getRegionTextAttr($value, $data)
    {
        $region = '';

        // 省
        $province = empty($data['province']) ? '' : $data['province'];
        if ($province) 
        {
            $province_text = model('Region')::where('code', $province)->value('name');
            $region = $province_text . "-";
        }

        // 市
        $city = empty($data['city']) ? '' : $data['city'];
        if ($city) 
        {
            $city_text = model('Region')::where('code', $city)->value('name');
            $region .= $city_text . "-";
        }

        // 区
        $district = empty($data['district']) ? '' : $data['district'];
        if ($district) 
        {
            $district_text = model('Region')::where('code', $district)->value('name');
            $region .= $district_text;
        }

        //广东省-广州市-海珠区
        return $region;
    }

    // 省
    public function getProvinceTextAttr($value,$data){
        $region = empty($data['province']) ? '' : trim($data['province']);

        // 查询中文字
        return model('Region')->where(['code' => $region])->value('name');
    }

    // 市
    public function getCityTextAttr($value,$data){
        $region = empty($data['city']) ? '' : trim($data['city']);

        // 查询中文字
        return model('Region')->where(['code' => $region])->value('name');
    }

    // 区
    public function getDistrictTextAttr($value,$data){
        $region = empty($data['district']) ? '' : trim($data['district']);

        // 查询中文字
        return model('Region')->where(['code' => $region])->value('name');
    }

    // 增加对应的获取器的方法，命名有规律 输出的值才正确
    // value 当前字段的值
    // data 是一整条数据结构
    public function getAvatarTextAttr($value,$data){
        //获取到cdn的地址
        $cdnurl = config('site.cdnurl') ? config('site.cdnurl') : '';
        $cdnurl = trim($cdnurl, '/');

        $avatar = isset($data['avatar']) ? $data['avatar'] : '';

        // 如果为空就给一个默认图片地址
        if(empty($avatar) || !is_file(".".$avatar)){
            $avatar = "/assets/img/avatar.png";
        }
        return $cdnurl.$avatar;
    }


    public function source(){
        // business.sourceid = source.id
        // $this->belongsTo(关联外键模型，外键字段，关键表的主键,废弃的参数，链表方式)
        // setEagerlyType(0) 采用join的方式来查询
        return $this->belongsTo('app\common\model\Business\Source','sourceid','id',[],'LEFT')->setEagerlyType(0);
    }

    public function admin(){
        // business.adminid = admin.id
        // $this->belongsTo(关联外键模型，外键字段，关键表的主键,废弃的参数，链表方式)
        // setEagerlyType(0) 采用join的方式来查询
        return $this->belongsTo('app\admin\model\Admin','adminid','id',[],'LEFT')->setEagerlyType(0);
    }
}
